package com.atguigu.school.mapper;

import com.atguigu.school.pojo.Clazz;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 访问班级数据
 *
 * @author 刘逸晖
 */
public interface ClazzMapper {

    /**
     * 新增班级
     *
     * @param clazz 预新增的班级信息
     */
    void insertClazz(Clazz clazz);

    /**
     * 根据 id 更新班级信息
     *
     * @param clazz 预更新班级的 id 和新数据
     */
    void updateClazzById(Clazz clazz);

    /**
     * 根据 id 批量删除班级
     *
     * @param ids 预删除班级的 id 列表
     */
    void deleteClazzByIds(@Param("ids") List<Integer> ids);

    /**
     * 根据名称和所属年级的名称查询班级
     *
     * @param name      班级名称，可以不完整，可为空
     * @param gradeName 年级名称，可以不完整，可为空
     * @param offset    偏移量，从 0 开始
     * @param 个数
     * @return 班级列表
     */
    List<Clazz> selectClazzByNameAndGradeName(@Param("name") String name, @Param("gradeName") String gradeName, @Param("offset") Integer offset, @Param("size") Integer size);

    /**
     * 根据名称和所属年级的名称统计班级数
     *
     * @param name      班级名称，可以不完整
     * @param gradeName 年级名称，可以不完整
     * @return 班级列表
     */
    Integer countClazzByNameAndGradeName(@Param("name") String name, @Param("gradeName") String gradeName);

    /**
     * 查询所有班级
     *
     * @return 所有班级
     */
    List<Clazz> selectClazz();

    /**
     * 统计班级数量
     *
     * @return 班级数
     */
    Integer countClazz();

}
